// pages/User/Contacts/Contacts.js
var pinyin = require("../../../utils/pinyin.js")
Page({

  /**
   * 页面的初始数据
   */
  data: {
    list: [
        {name:'张三',phone:'123456',idCard: '123456789012384958234'},
        {name:'王五',phone:'123456',idCard: '123456789012384958234'},
        {name:'赵六',phone:'123456',idCard: '123456789012384958234'},
        {name:'阿是',phone:'123456',idCard: '123456789012384958234'},
        {name:'商店',phone:'123456',idCard: '123456789012384958234'},
        {name:'请问',phone:'123456',idCard: '123456789012384958234'},
        {name:'中长款',phone:'123456',idCard: '123456789012384958234'},
        {name:'离开',phone:'123456',idCard: '123456789012384958234'},
        {name:'走街串巷',phone:'123456',idCard: '123456789012384958234'},
    ],
    personList: []
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.list();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    let userId = wx.getStorageSync('userId')
    return {
      path: '/pages/Welcome/Welcome?scene='+userId,
    }
  },
  // 数据处理函数
  list(){
      let personList = this.data.personList
      console.log("personList",personList)
      let i = 0
      /**
       * 1、调用外部js的方法ChineseToPinYin对数据进行分组
       * 2、分组的结果存在排序有误的情况,例如I组,V组等没有汉字的分组
       */
      this.data.list.forEach((item, index) => {
          let bool = personList.some(ite => {
              return ite.sign == pinyin.ChineseToPinYin(item.name).substr(0, 1)
          })
          if (personList.length == 0 || !bool) {
              personList.push({
                  id: i,
                  sign: pinyin.ChineseToPinYin(item.name).substr(0, 1),
                  name: [item]
              })
              i++
          } else if (bool) {
              let a = pinyin.ChineseToPinYin(item.name).substr(0, 1)
              for (let s in personList) {
                  if (a == personList[s].sign) {
                      personList[s].name.push(item)
                  }
              }
          }
      })
      this.setData({
          personList,
      })
      console.log("personList1",personList)
      /**
       * 3、对分组好的数据进行排序
       * 4、根据标志sign的ASCII码进行初次排序筛选
       * 5、如果标志sign不在A到Z之间,则添加到#分组中
       */
      this.data.personList.forEach((item, index) => {
          if ((item.sign.charCodeAt() < 65 || item.sign.charCodeAt() > 90) && item.sign.charCodeAt() != 35) {
              this.data.personList.splice(index, 1, "")
              // 注:此处为防止splice分割后,数组索引index发生变化,故将需要剔除的元素替换为“”,后再将其剔除
              let i = this.data.personList.findIndex(item => {
                  return item.sign == '#'
              })
              if (i != -1) {
                  item.name.forEach(it => {
                      this.data.personList[i].name.push(it)
                  })

              } else {
                  this.data.personList.push({
                      id: 99,
                      sign: '#',
                      name: item.name
                  })
              }
          }
      })
      // 利用filter方法,剔除之前存在的空元素
      personList = this.data.personList.filter(function (s) {
          return s != ''; // 注：IE9(不包含IE9)以下的版本没有trim()方法
      });
      this.setData({
          personList
      })
      // 利用sort方法进行排序
      this.data.personList.sort(this.listSort('sign'))
      // 一般情况下#分组在最下面,在此做以处理
      if (this.data.personList[0].sign == '#') {
          this.data.personList.splice(0, 1).forEach(item => {
              this.data.personList.push(item)
          })
      }
      this.setData({
          personList
      })
    },
    // 排序
    listSort(prop) {
        return function (a, b) {
            var value1 = a[prop].charCodeAt();
            var value2 = b[prop].charCodeAt();
            return value1 - value2
        }
    },
})